/*
 * ABMFamilia.cpp
 *
 */

#include "ABMFamilia.h"

ABMFamilia::ABMFamilia(std::string nArchivo, unsigned int tamanioBucket) {
	this->nArchivo = nArchivo;
	this->tamanioBucket = tamanioBucket;
	arbolFamilia = new Indice(nArchivo, tamanioBucket);

}

ABMFamilia::~ABMFamilia() {

}

bool ABMFamilia::alta(unsigned int id, string descripcion, string fabricante,
		int precio) {
	string valor = descripcion + ";" + fabricante + ";"
			+ Util::intToString(precio);
	ElementoHoja elemento(id, valor);
	return ((arbolFamilia->alta(elemento)) != -1);
}

bool ABMFamilia::baja(unsigned int id) {
	return ((arbolFamilia->baja(id)) != -1);
}

bool ABMFamilia::modificacion(unsigned int id, string descripcion,
		string fabricante, int precio) {
	string valor = descripcion + ";" + fabricante + ";"
			+ Util::intToString(precio);
	ElementoHoja elemento(id, valor);
	return ((arbolFamilia->modificar(elemento)) != -1);
}

/*si lo encuentra devuelve el valor de Key con los atributos separados por ; */

string ABMFamilia::buscar(unsigned int id) {
	ResultadoBuscar res = arbolFamilia->buscar(id);
	ElementoHoja elemH= arbolFamilia->buscarElemento(id);
	if (elemH.clave !=- 1) {
		return Util::intToString(id) + ";" + elemH.valor;
	} else {
		return "";
	}
}

vector<string> ABMFamilia::listar() {
	vector<ElementoHoja> elementos = arbolFamilia->recorreOrdenado();
	vector<string> resultado;
	for (int i = 0; i < elementos.size(); i++) {
		string valorVector = Util::uIntToString(elementos.at(i).clave) + ";"
				+ (elementos.at(i).valor);
		resultado.push_back(valorVector);
	}
	return resultado;
}
